﻿#define _CRT_SECURE_NO_WARNINGS 1
//给你一个混合字符串 s ，请你返回 s 中 第二大 的数字，如果不存在第二大的数字，请你返回 - 1 。
//混合字符串 由小写英文字母和数字组成。
//int secondHighest(char * s){
//	int hash[10] = { 0 };
//	int i = 0;
//	for (i = 0; s[i] != '\0'; i++)
//	{
//		if (s[i] >= '0'&&s[i] <= '9')
//		{
//			hash[s[i] - '0']++;
//		}
//	}
//	int flag = 0;
//	for (i = 9; i >= 0; i--)
//	{
//		if (flag == 0)
//		{
//			if (hash[i] != 0)
//			{
//				flag = 1;
//			}
//		}
//		else if (hash[i])
//		{
//			flag = 2;
//			break;
//		}
//	}
//	if (flag == 2)
//	{
//		return i;
//	}
//	return -1;
//}







给你一个大小为 rows x cols 的矩阵 mat，其中 mat[i][j] 是 0 或 1，请返回 矩阵 mat 中特殊位置的数目 。

特殊位置 定义：如果 mat[i][j] == 1 并且第 i 行和第 j 列中的所有其他元素均为 0（行和列的下标均 从 0 开始 ），则位置(i, j) 被称为特殊位置。

来源：力扣（LeetCode）
链接：https ://leetcode-cn.com/problems/special-positions-in-a-binary-matrix
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
int numSpecial(int** mat, int matSize, int* matColSize){
	int i = 0;
	int j = 0;
	int size = 0;
	for (i = 0; i<matSize; i++)
	{
		size = 0;
		for (j = 0; j<*matColSize; j++)
		{
			if (mat[i][j] == 1)
			{
				size++;
			}
		}
		if (size>1)
		{
			for (j = 0; j<*matColSize; j++)
			{
				if (mat[i][j] == 1)
				{
					mat[i][j] = 2;
				}
			}
		}
	}
	for (i = 0; i<*matColSize; i++)
	{
		size = 0;
		for (j = 0; j<matSize; j++)
		{
			if (mat[j][i] == 1 || mat[j][i] == 2)
			{
				size++;
			}
		}
		if (size>1)
		{
			for (j = 0; j<matSize; j++)
			{
				if (mat[j][i] == 1)
				{
					mat[j][i] = 2;
				}
			}
		}
	}
	int ret = 0;
	for (i = 0; i<matSize; i++)
	{
		for (j = 0; j<*matColSize; j++)
		{
			if (mat[i][j] == 1)
			{
				ret++;
				break;
			}
		}
	}
	return ret;
}








//给你一个仅包含小写英文字母和 '?' 字符的字符串 s，请你将所有的 '?' 转换为若干小写字母，使最终的字符串不包含任何 连续重复 的字符。
//注意：你 不能 修改非 '?' 字符。
//题目测试用例保证 除 '?' 字符 之外，不存在连续重复的字符。
//在完成所有转换（可能无需转换）后返回最终的字符串。如果有多个解决方案，请返回其中任何一个。可以证明，在给定的约束条件下，答案总是存在的。
//char * modifyString(char * s){
//	for (int i = 0; s[i] != '\0'; i++)
//	{
//		if (s[i] == '?')
//		{
//			char ch = 'a';
//			while ((i>0 && ch == s[i - 1]) || (s[i + 1] != '\0'&&s[i + 1] == ch))
//			{
//				ch++;
//			}
//			s[i] = ch;
//		}
//	}
//	return s;
//}







//给你一个整数 n，请你每隔三位添加点（即 "." 符号）作为千位分隔符，并将结果以字符串格式返回。
//char * thousandSeparator(int n){
//	int tmp = n;
//	int j = 0;
//	int r = 0;
//	int y = 0;
//	int count = 0;
//	while (tmp)
//	{
//		count++;
//		tmp /= 10;
//	}
//	char*a = calloc(count + count / 3 + 3, 1);
//	if (n == 0)
//	{
//		a[0] = '0';
//	}
//	count = 0;
//	while (n)
//	{
//		a[j++] = n % 10 + '0';
//		n /= 10;
//		count++;
//		if (count % 3 == 0 && n)
//		{
//			a[j++] = '.';
//		}
//	}
//	y = strlen(a) - 1;
//	while (r <= y)
//	{
//		tmp = a[r];
//		a[r] = a[y];
//		a[y] = tmp;
//		r++;
//		y--;
//	}
//	return a;
//}







//给你一个整数数组 arr，请你判断数组中是否存在连续三个元素都是奇数的情况：如果存在，请返回 true ；否则，返回 false 。
//bool threeConsecutiveOdds(int* arr, int arrSize){
//	int i = 0;
//	for (i = 0; i<arrSize - 2; i++)
//	{
//		if (arr[i] % 2 == 1 && arr[i + 1] % 2 == 1 && arr[i + 2] % 2 == 1)
//		{
//			return 1;
//		}
//	}
//	return 0;
//}







//给你一个 严格升序排列 的正整数数组 arr 和一个整数 k 。
//请你找到这个数组里第 k 个缺失的正整数。
//int findKthPositive(int* arr, int arrSize, int k){
//	int i = 0;
//	int num[2001] = { 0 };
//	int count = 0;
//	for (i = 0; i<arrSize; i++)
//	{
//		num[arr[i]] = 1;
//	}
//	for (i = 1; i<2001; i++)
//	{
//		if (num[i] != 0)
//		{
//			continue;
//		}
//		else if (num[i] == 0)
//		{
//			count++;
//		}
//		if (count == k)
//		{
//			return i;
//		}
//	}
//	return i;
//}







//给你一个由大小写英文字母组成的字符串 s 。
//一个整理好的字符串中，两个相邻字符 s[i] 和 s[i + 1]，其中 0 <= i <= s.length - 2 ，要满足如下条件:
//若 s[i] 是小写字符，则 s[i + 1] 不可以是相同的大写字符。
//若 s[i] 是大写字符，则 s[i + 1] 不可以是相同的小写字符。
//请你将字符串整理好，每次你都可以从字符串中选出满足上述条件的 两个相邻 字符并删除，直到字符串整理好为止。
//请返回整理好的 字符串 。题目保证在给出的约束条件下，测试样例对应的答案是唯一的。
//注意：空字符串也属于整理好的字符串，尽管其中没有任何字符。
//来源：力扣（LeetCode）
//链接：https ://leetcode-cn.com/problems/make-the-string-great
//著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
//char * makeGood(char * s){
//	int len = strlen(s);
//	int index = 0;
//	int i = 0;
//	char tmp[100] = { 0 };
//	for (i = 0; i<len; i++)
//	{
//		if (index>0)
//		{
//			if (s[i] + 32 == tmp[index - 1] || s[i] == tmp[index - 1] + 32)
//			{
//				index--;
//			}
//			else
//			{
//				tmp[index++] = s[i];
//			}
//		}
//		else
//		{
//			tmp[index++] = s[i];
//		}
//	}
//	for (i = 0; i<index; i++)
//	{
//		s[i] = tmp[i];
//	}
//	s[index] = 0;
//	return s;
//
//}








////猜数字游戏
//#include <stdio.h>
//#include <stdlib.h>
//#include <time.h>
//#define MAX_STAGE 10;//定义一个宏方便修改
//int main()
//{
//	int ans = 0;//目标数值
//	int no = 0;//接收玩家输入
//	int n = MAX_STAGE;//限制猜选次数
//	int num[MAX_STAGE] = { 0 };//定义数组记录玩家输入的值
//	int stage = 0;
//	srand((int)time(NULL));//随机生成种子数
//	ans = rand() % 1000;//取模获取范围
//	printf("请猜选0~999的数字\n");
//	while (n)//while循环判断改为n,n不为0，还可以猜选
//	{
//		printf("还有%d次选择机会\n", n--);//每次猜选，减少1；
//		printf("请输入你要猜的数：");
//		scanf("%d", &no);//玩家输入
//		num[stage++]=no;//存储玩家输入值
//		if (no > ans)
//		{
//			printf("猜大了\n");
//		}
//		else if (no < ans)
//		{
//			printf("猜小了\n");
//		}
//		else
//		{
//			printf("恭喜你正确\n");
//			break;
//		}
//	}
//	if (n == 0)
//	{
//		printf("很遗憾没猜对\n");
//	}
//	//打印玩家输入值
//	for (int i = 0; i < stage; i++)
//	{
//		printf("第%d次：%d\n", i + 1, num[i]);
//	}
//	return 0;
//}








//#include <stdio.h>
//#include <stdlib.h>
//#include <time.h>
//int main()
//{
//	int ans = 0;//目标数值
//	int no = 0;//接收玩家输入
//	srand((int)time(NULL));//随机生成种子数
//	ans = rand() % 1000;//取模获取范围
//	printf("请猜选0~999的数字\n");
//	while (1)//while循环判断始终为真，只有玩家猜中了才会break结束。
//	{
//		printf("请输入你要猜的数：");
//		scanf("%d", &no);//玩家输入
//		if (no > ans)
//		{
//			printf("猜大了\n");
//		}
//		else if (no < ans)
//		{
//			printf("猜小了\n");
//		}
//		else
//		{
//			printf("恭喜你正确\n");
//			break;
//		}
//	}
//	return 0;
//}








//#include <stdio.h>
//int main()
//{
//	int ans = 7;//目标数值
//	int no = 0;//接收玩家输入
//	printf("请猜选0~9的数字\n");
//	while (1)//while循环判断始终为真，只有玩家猜中了才会break结束。
//	{
//		printf("请输入你要猜的数：");
//		scanf("%d", &no);//玩家输入
//		if (no > ans)
//		{
//			printf("猜大了\n");
//		}
//		else if (no < ans)
//		{
//			printf("猜小了\n");
//		}
//		else
//		{
//			printf("恭喜你正确\n");
//			break;
//		}
//	}
//	return 0;
//}









//#include <stdio.h>
//int main()
//{
//	int ans = 7;
//	int no = 0;
//	printf("请猜选0~9的数字\n");
//	printf("请输入你要猜的数：");
//	scanf("%d", &no);
//	if (no > ans)
//	{
//		printf("猜大了\n");
//	}
//	else if (no < ans)
//	{
//		printf("猜小了\n");
//	}
//	else
//	{
//		printf("恭喜你正确\n");
//	}
//	return 0;
//}